const { url } = require('../../config/index.js') // 接口请求地址
const { time1 } = require('../../utils/format.js') // 格式化工具
const { rePayOrder, getYue, yuePay } = require('../../common/js/payInOrder.js') // 订单内发起支付
const MD5 = require('../../utils/md5.js') // MD5
const { commonSuccess } = require('../../utils/util.js')

Page({
  // 页面的初始数据
  data: {
    loading: true,
    allInfo: {},
    plus: 0,
    // 改需求-改需求-改需求-改需求
    userYue: 0, // 用户余额
    showChooseWay: false, // 是否展示选择支付 
    needPayAmount: 0, // 需要支付的金额
    info: null, // 当前这一单的信息
    inPay: false, // 是否正在支付中
    focusPwd: false, // 是否focus 密码框
    yuePayInfo: null, // 最终给余额支付使用的数据
  },
  // 点击支付
  payThis(e) {
    // let info = e.currentTarget.dataset.info
    // 正在支付中
    if (this.data.inPay) return
    this.setData({ inPay: true })

    // 余额(每次点击支付时获取当前余额)
    getYue().then((data) => {
      this.setData({
        userYue: Number(data),// 当前余额
        // info: info, // 当前这一单的信息
        showChooseWay: true, // 打开弹窗
        needPayAmount: Number(this.data.allInfo.TOTAL_PRICE) // 这一单的总价
      })
    }).catch(err => {
      this.setData({ inPay: false })
      console.error(err)
    })

  },
  // 确认支付(弹窗)
  okToPay(e) {
    this.setData({ showChooseWay: false })
    let payWay = e.detail.payway == 'wx' ? 2 : 9
    console.log(payWay)
    this.emitPay(payWay)
  },
  // 触发支付
  emitPay(payWay) {
    /**
     * userId 用户id, orderid 订单id, cashVolNo 代金券编号 payWay 支付方式
     */
    rePayOrder(wx.getStorageSync('userInfo').USER_ID, this.data.allInfo.ORDER_ID, this.data.allInfo.VOUCHERS_NO, payWay)
      .then(res => {
        if (payWay == 2) {
          // 微信支付成功
          // this.getOrder()
          commonSuccess()
        } else if (payWay == 9) {
          // 唤出密码窗
          console.warn(res.data) 
          this.setData({
            focusPwd: true,
            yuePayInfo: res.data
          })
        }
      })
      .catch(res => {
        this.setData({ inPay: false })
        wx.showModal({
          title: '提示',
          showCancel: false,
          content: '支付失败',
        })
      })
  },
  // 密码输入完成
  inputEnd(e) {
    let pwd = e.detail
    // console.log(pwd)
    yuePay(this.data.yuePayInfo, pwd)
      .then(data => {
        console.log(data)
        if (data.STATUS_CODE == 1) {
          // 支付成功 //
          this.setData({
            info: null, // 当前这一单的信息
            inPay: false, // 是否正在支付中
            focusPwd: false, // 是否focus 密码框
            yuePayInfo: null // 最终给余额支付使用的数据
          })
          commonSuccess()
        }
      })
      .catch(err => {
        console.warn(err)
      })
  },
  // 关闭支付(弹窗)
  closeOrderPay() {
    this.setData({
      showChooseWay: false,
      inPay: false
    })
  },
  // 关闭密码窗（弹窗）
  closePwd() {
    this.setData({
      info: null, // 当前这一单的信息
      inPay: false, // 是否正在支付中
      focusPwd: false, // 是否focus 密码框
      yuePayInfo: null // 最终给余额支付使用的数据
    })
  },
  // 订单中发起支付
  rePay () {
  /**
   * userId 用户id, orderid 订单id, cashVolNo 代金券编号
   */
    rePayOrder(wx.getStorageSync('userInfo').USER_ID, this.data.allInfo.ORDER_ID, this.data.allInfo.VOUCHERS_NO)
    .then(res => {
      wx.showToast({
        title: '支付成功',
      })
      setTimeout(() => {
        wx.navigateBack({
          delta: 1
        })
      }, 1500)
    })
    .catch(res => {
      wx.showModal({
        title: '提示',
        showCancel: false,
        content: '支付失败',
      })
    })
  },
  // 获取订单详情
  getDetails(orderid) {
    wx.showLoading({mask: true})
    wx.request({
      url: url + 'ServOrderNew/getOrderDetail.action',
      method: 'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      data: {
        USER_ID: wx.getStorageSync('userInfo').USER_ID,
        ORDER_ID: orderid  
      },
      success: res => {
        wx.hideLoading()
        if (res.data.STATUS_CODE == 1) {
          let resData = res.data.RESULT_DATA[0]
          console.log(resData)
          // 计算总件数
          let plus = 0
          for (let j = 0; j < resData.DETAIL_LIST.length; j++) {
            plus += resData.DETAIL_LIST[j].QUANTITY
          }
          // 格式化日期
          resData.CREATE_TIME = time1(resData.CREATE_TIME)
          this.setData({ 
            plus: plus,
            loading: false,
            allInfo: resData
          })
        }
      }
    })  
  },
  // 取消订单
  cancel () {
    let cancel = () => {
      wx.request({
        url: url + 'ServOrderNew/cancelOrder.action',
        method: 'POST',
        header: {
          'content-type': 'application/x-www-form-urlencoded'
        },
        data: {
          USER_ID: wx.getStorageSync('userInfo').USER_ID,
          orderId: this.data.allInfo.ORDER_ID
        },
        success: res => {
          if (res.data.STATUS_CODE == 1) {
            wx.navigateBack({
              delta: 1
            })
          }
        }
      })
    }
    wx.showModal({
      title: '提示',
      content: '确定要取消该订单?',
      success: function (res) {
        if (res.confirm) {
          cancel()
        }
      }
    })
  },
  // 去评价
  goEvaluate () {
    wx.navigateTo({
      url: '/pages/evaluate/evaluate?orderid=' + this.data.allInfo.ORDER_ID
    })
  },
  // 去咖啡店
  goThisShop (e) {
    let id = e.currentTarget.dataset.compid
    console.log(id)
    wx.navigateTo({
      url: '/pages/shop/shop?shopid=' + id
    })
  },
  // 生命周期函数--监听页面加载
  onLoad: function (options) {
    let orderid = options.orderid
    this.getDetails(orderid)
  },
  // 生命周期函数--监听页面初次渲染完成
  onReady: function () {
  },
  // 生命周期函数--监听页面显示
  onShow: function () {
  },
  // 生命周期函数--监听页面隐藏
  onHide: function () {
  },
  // 生命周期函数--监听页面卸载
  onUnload: function () {
  }
})
